<?php

    $dir = pathinfo($_SERVER['SCRIPT_FILENAME']); 

    if (ini_set("include_path",ini_get("include_path").((strtoupper(PHP_OS) == "LINUX") ? ":" : ";").$dir['dirname']) === false) {
        echo "ERROR: Definicion en el include_path";
        exit;
    }

    include('../adodb/adodb.inc.php');
    include_once('../adodb/adodb-pager.inc.php');
    include_once('../conf/dbconn_param.php');
    include_once('FetchUtil.php');
    
    $db = ADONewConnection($dbdriver);
    $db->Connect($server, $user, $password, $database);
    $db->SetFetchMode(ADODB_FETCH_ASSOC);
    
    $dsn = "$dbdriver://$user:$password@$server/$database?clientflags=65536"; 
    $db_sp = new FetchUtil($dsn);
    
    $ordenId = $_REQUEST['ordenId'];
    $empresaId = $_REQUEST['empresaId'];
    $fincaId = $_REQUEST['fincaId'];
    $clienteId = $_REQUEST['clienteId'];
    $marcacion = $_REQUEST['marcacion'];
    $tipoCaja = $_REQUEST['tipoCaja'];
    $numeroCajas = $_REQUEST['numeroCajas']; // defecto 1, si no se trabaja con cajas
    $variedadId = $_REQUEST['variedadId'];
    $longitud = $_REQUEST['longitud'];
    $bodegaId = $_REQUEST['bodegaId'];
    $bunches = $_REQUEST['bunches'];
    $tallosBunche = $_REQUEST['tallosBunche'];
    $cajaDesde = $_REQUEST['cajaDesde'];
    $cajaHasta = $_REQUEST['cajaHasta'];
    // defecto 1, si no se trabaja con cajas
    /*
     * Se devide el numero de ramos para el numero de cajas
     * 
     */
    $productoId = $_REQUEST['productoId'];
    $fechaCorte = $_REQUEST['fechaCorte'];
    $fechaSalida = $_REQUEST['fechaSalida'];
    $presentacion = $_REQUEST['presentacion']; 
    //Verificar la forma de trabajo, BUNCHE, CAJA
    
    $fechaPedido = date("Ymd"); 
    
    $marcacionId = 0;
    //se debe obtener por producto y variedad
    $receta = "ROMANCE VALENTINE COLLECTION";
    
    //cuando se maneja por cajas 
    $indice = 1;
    $estado_flor=2; //Se graba simpre como reservado
    
    //Verificar el tipo de presentacion
    if ( $presentacion == "1"){
        $bunchesCaja = (($cajaHasta - $cajaDesde) + 1);
    }

    
    //Verificamos si existe $nroOrden > 0
    if(trim($marcacion) == "")
    {
        $marcacion = "-";
    }
    
    if( $ordenId != "0" )
    {
        //echo "Existe un n&uacute;mero de pedido";
    }
    else
    {
        //echo "Generamos un n&uacute;mero de pedio<br/>";
        
        $sql = "SELECT MAX( orden ) as orden FROM prepacking";
        $rs = $db->Execute($sql);
        $datos = $rs->GetRows();
        //$db->Close();
		
        $ordenId = $datos[0]['orden'];
        $ordenId++; 
    
        $marcacionId = 1;

    }
    
    /*Obtenemos la disponibilidad por fecha de corte*/
    
    
    
    /*llamada al store procedure*/
	try {
		
		$rows_sp = $db_sp->fetchAll("CALL GetDispVarLongFec 
	            ($productoId,$bodegaId,$tallosBunche,'$fechaCorte',$variedadId,$longitud )");
		
	} catch (Exception $e) {
	    echo 'Excepci�n capturada: ',  $e->getMessage(), "\n";
	}
    
    //Grabacion por cajas
    
    $numCajas=($cajaHasta-$cajaDesde)+1;
    $capacidadCaja=floor($bunches/$numCajas);
    $dispo=0;
    $dispoCaja=$capacidadCaja;
    $i=0; //Indice para recorrer el arreglo


    //echo "Entra al while   bunches $bunches   $numCajas     $capacidadCaja<br/>";
    //print_r($rows_sp);
	$db->Close();
    
    $bunchesK=1;

    while ($bunchesK<=100 )
    {
        //Repartimos el contenido del arreglo
        if(count($rows_sp)>0 and $i < count($rows_sp))
        {
        $fecha = $rows_sp[$i]['fecha_corte'];

            if($bunches >= $rows_sp[$i]['dispo'] and $dispoCaja >= $rows_sp[$i]['dispo'])
            {
                $dispo=$rows_sp[$i]['dispo'];
                $i++;
                            //echo "1:$dispo<br/>";
            }
            else
            {
                $dispo=$dispoCaja;
                $rows_sp[$i]['dispo']=$rows_sp[$i]['dispo']-$dispo;
                            //echo "2:$dispo<br/>";
                            //echo $rows_sp[$i]['dispo'];	
                            //echo "<br/>";
            }

            $dispoCaja=$dispoCaja-$dispo;
            $bunches=$bunches-$dispo;
        }
        else {

            if($bunches>=$dispoCaja)
            {
                $fecha = $rows_sp[$i]['fecha_corte'];
                $dispo=$dispoCaja;
                $dispoCaja = 0;
                $bunches=$bunches-$dispo;
                //echo "4:$dispo<br/>";
            }
        }

            if ( ! $fecha )
            $fecha = date("Ymd");
        //Grabamos $dispo
            if($dispo>0 and $cajaDesde<=$cajaHasta)
	    	{
			    $db1 = ADONewConnection($dbdriver);
			    $db1->Connect($server, $user, $password, $database);
			    $db1->SetFetchMode(ADODB_FETCH_ASSOC);
				
				$sql = "insert into prepacking(orden, packing, empresa_id, finca_id, 
				cliente_id,marca_id,marca,indice, tipo_caja,
				numero_cajas,receta,variedad_id,longitud,
				bodega_id,bunches,tallos,estado_flor_id,
				caja,producto_id,fecha_corte, fecha_pedido,salida_finca) 
		        values($ordenId,$ordenId,$empresaId,$fincaId,
		        $clienteId,$marcacionId,'$marcacion',$indice,'$tipoCaja',
		        $numeroCajas,'$receta',$variedadId,$longitud,
		        $bodegaId,$dispo,$tallosBunche,$estado_flor,
		        $cajaDesde,$productoId,'$fecha','$fechaPedido','$fechaSalida')";		    
	    		
				$db1->debug = false;
				
				if ($db1->Execute($sql) === false) print 'error inserting';
				
				//echo "Dispo->:$dispo bunches:$bunches CapacidadCaja: $dispoCaja i : $i  Arreglo : $fecha   NumCaja: $cajaDesde    <br/>";
				
	    }
        

        if($dispoCaja == 0 and $cajaDesde<$cajaHasta)
        {   
            $cajaDesde++;
            $dispoCaja=$capacidadCaja;

        } 


        if($bunches  == 0 )
        {   
            break;
        }    	


            $bunchesK++;

    }
    
    
   function grabarItem($_db, $_cajaDesde, $_bunches, $_fechaPedido )
   {
        $sql = "insert into prepacking(orden, packing, empresa_id, finca_id, 
        cliente_id,marca_id,marca,indice, tipo_caja,
        numero_cajas,receta,variedad_id,longitud,
        bodega_id,bunches,tallos,estado_flor_id,
        caja,producto_id,fecha_corte, fecha_pedido,salida_finca) 
        values($GLOBALS[ordenId],$GLOBALS[ordenId],$GLOBALS[empresaId],$GLOBALS[fincaId],
        $GLOBALS[clienteId],$GLOBALS[marcacionId],'$GLOBALS[marcacion]',$GLOBALS[indice],'$GLOBALS[tipoCaja]',
        $GLOBALS[numeroCajas],'$GLOBALS[receta]',$GLOBALS[variedadId],$GLOBALS[longitud],
        $GLOBALS[bodegaId],$_bunches,$GLOBALS[tallosBunche],$GLOBALS[estado_flor],
        $_cajaDesde,$GLOBALS[productoId],'$_fechaPedido','$GLOBALS[fechaPedido]','$GLOBALS[fechaSalida]')";

	echo $sql;
	echo "<br/><br/>";
	
       $_db->Execute($sql);
   }

        
  		$db1->Close();
		  
		  
		  
  echo json_encode($ordenId);
  
  
   
?>
